package com.ditian.http.apienc;

import com.alibaba.fastjson.JSONObject;
import com.ditian.code.ErrorMessage;
import com.ditian.http.Key;
import com.ditian.http.Response;
import com.ditian.http.api.ImageApi;
import com.ditian.ret.image.DetectSceneAndObjectRet;
import com.ditian.ret.image.RecognizeTextV1Ret;

public class ImageApiEnc {

	private static ImageApi api = new ImageApi(Key.API_KEY, Key.API_SECRET);

	/**
	 * 图片分析，识别图片场景和图片主体。
	 * 
	 * @param imageUrl
	 *            身份证图片的网络地址，和fileByte，image_base64三选一上传
	 * @param fileByte
	 *            本地身份证图片的二进制数据，和imageUrl，image_base64三选一上传
	 * @param image_base64
	 *            身份证图片的base64格式数据，和fileByte，imageUrl三选一上传
	 * @return 返回结果，Response实例
	 * @throws Exception
	 */
	public static DetectSceneAndObjectRet imageRecognition(String imageUrl,
			byte[] fileByte, String image_base64) {
		try {
			Response response = api.imageRecognition(imageUrl, fileByte,
					image_base64);
			if (response != null) {
				String json = response.getJson();
				int status = response.getStatus();
				DetectSceneAndObjectRet ret = JSONObject.parseObject(json,
						DetectSceneAndObjectRet.class);
				if (status != 200 && ret != null) {
					ret.setError(ErrorMessage.messageOf(status,
							ret.getErrorMessage()));
				}
				return ret;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 找出图片中出现的文字信息。
	 * 
	 * @param imageUrl
	 *            身份证图片的网络地址，和fileByte，image_base64三选一上传
	 * @param fileByte
	 *            本地身份证图片的二进制数据，和imageUrl，image_base64三选一上传
	 * @param image_base64
	 *            身份证图片的base64格式数据，和fileByte，imageUrl三选一上传
	 * @return 返回结果，Response实例
	 * @throws Exception
	 */
	public static RecognizeTextV1Ret textRecognition(String imageUrl,
			byte[] fileByte, String image_base64) {
		try {
			Response response = api.textRecognition(imageUrl, fileByte,
					image_base64);
			if (response != null) {
				String json = response.getJson();
				int status = response.getStatus();
				RecognizeTextV1Ret ret = JSONObject.parseObject(json,
						RecognizeTextV1Ret.class);
				if (status != 200 && ret != null) {
					ret.setError(ErrorMessage.messageOf(status,
							ret.getErrorMessage()));
				}
				return ret;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}
